package com.xyy.saas.payment.dao.model;

import lombok.Data;

import java.util.Date;

@Data
public class RefundOrder {

    /**
     * 已创建
     */
    public static Byte STATUS_CREATE = 1;

    /**
     * 退款中
     */
    public static Byte STATUS_IN = 2;

    /**
     * 退款完成
     */
    public static Byte STATUS_FINISH = 3;

    /**
     * 退款失败
     */
    public static Byte STATUS_FAIL = 4;

    /**
     * 退款关闭
     */
    public static Byte STATUS_CLOSED = 5;

    /**
     * 退款延迟
     */
    public static Byte STATUS_DELAY = 9;

    /**
     * 自增主键id
     */
    private Long id;

    /**
     * 交易单号
     */
    private String refundNo;

    /**
     * 渠道退款单号
     */
    private String channelRefundNo;

    /**
     * 渠道支付单号
     */
    private String channelChargeNo;

    /**
     * 绑定的订单号
     */
    private String payNo;

    /**
     * 第三方渠道名
     */
    private String channel;

    /**
     * 业务类型
     */
    private String businessType;

    /**
     * 业务类型
     */
    private String businessOrderType;

    /**
     * 业务方退款单号
     */
    private String businessRefundNo;

    /**
     * 用户id
     */
    private String userId;

    /**
     * 交易金额(分)
     */
    private Integer amount;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 成功时间
     */
    private Date successTime;

    /**
     * 修改时间
     */
    private Date updateTime;

    /**
     * 退款单状态(0 未成功 1 已完成 2 退款失败)
     */
    private Byte status;

    /**
     * 回调地址
     */
    private String callbackAddress;

    /**
     * 版本号
     */
    private Integer version;

    private String payer;

    private String channelTransactionNo;

    /**
     * 平安退款状态 -> 支付平台退款状态
     * 平安（1 成功 2 处理中 4 失败）
     * @return
     */
    public static Byte convertPinganRefundStatus(String pinganStatus) {
        // 退款成功本地状态也存储退款中，为了复用统一回调逻辑
        if("1".equals(pinganStatus)) {
            return STATUS_IN;
        }
        else if("2".equals(pinganStatus)) {
            return STATUS_IN;
        }
        else if("4".equals(pinganStatus)) {
            return STATUS_FAIL;
        }

        // 默认返回退款中
        return STATUS_IN;
    }
}